home *** CD-ROM | disk | FTP | other *** search
- ║CM:MSD - $╞8──
- ║LM21:RM70:PP66:PG60
- ║P#134
- ║FT1:,,╨AGE <>
- ║AI-16
- $╞8── ╙ET .╪ TO $05. ┴ ╙┘╬├ MARK IS 5 BYTES OF $╞╞.
- $╞8─╞ ╫╥╘╙10 ╫AIT FOR BYTE WRITTEN SIGNAL.
- $╞8┼2 ╫AIT FOR APPROXIMATELY 14 MICROSECONDS FOR BYTE TO GO LOW.
- $╞8┼6 ─ECREMENT .╪ AND LOOP BACK TO ╫╥╘╙10 IF .╪ > 0.
- $╞8┼9 ╠OAD .╪ WITH $0┴ TO OUTPUT THE BLOCK HEADER WHICH IS 10 ╟├╥ BYTES LONG.
- $╞8┼┬ ╠OAD .┘ FROM ╩╧┬╘╥╦ [$4┼┴5], THE INDEX OF THE CURRENT HEADER.
- $╞8┼┼ ╫╥╘╙20 ╫AIT FOR LAST BYTE WRITTEN SIGNAL.
- $╞8╞1 ╧BTAIN HEADER BYTE FROM ┬╒╞0,┘ [$4000,┘] AND SET IT UP IN THE OUTPUT ╨ORT ┬ [$01].
- $╞8╞6 ╔NCREMENT .┘ TO NEXT HEADER BYTE, DECREMENT .╪ AND LOOP BACK TO ╫╥╘╙20 IF .╪ > 0.
- $╞8╞┴ ╙ET .╪ TO $08 TO OUTPUT 8 GAP BYTES.
- $╞8╞├ ╫╥╘╙30 ╫AIT FOR LAST BYTE WRITTEN SIGNAL.
- $╞8╞╞ ╫ASTE 4 MICROSECONDS.
- $╞901 ╙ET ╨ORT ┬ [$01] TO $55 (A GAP BYTE).
- $╞905 ─ECREMENT .╪ AND LOOP BACK TO ╫╥╘╙30 IF .╪ > 0.
- ╬OTE: $╞8╞├...$╞907 TAKE APPROXIMATELY 14 MICROSECONDS BY WHICH TIME, THE BYTE WRITTEN SIGNAL SHOULD ONCE AGAIN BE LOW.
- $╞908 ╙ET .┴ TO $╞╞.
- $╞90┴ ╙ET .╪ TO $05. ┴ ╙┘╬├ MARK IS 5 BYTES OF $╞╞.
- $╞90├ ─┬╙┘╬├ ╫AIT FOR BYTE WRITTEN SIGNAL.
- $╞90╞ ╫ASTE APPROXIMATELY 6 MICROSECONDS.
- $╞912 ╙AVE .┴ ($╞╞) IN ╨ORT ┬ [$01].
- $╞914 ─ECREMENT .╪ AND LOOP BACK TO ─┬╙┘╬├ IF .╪ > 0.
- $╞917 ╙ET .╪ TO $┬┬, THE START OFFSET OF THE DATA BLOCK IN THE OVERFLOW BUFFER.
- $╞919 ╫╥╘╙40 ╫AIT FOR LAST BYTE WRITTEN SIGNAL.
- $╞91├ ╫ASTE APPROXIMATELY 4 MICROSECONDS.
- $╞91┼ ╙ET ╨ORT ┬ [$01] TO ╧╓╥┬╒╞,╪ [$4╞00,╪].
- $╞923 ╔NCREMENT .╪ TO NEXT BYTE AND LOOP BACK TO ╫╥╘╙40 IF .╪ IS NOT ZERO. ╘HIS LOOP OUTPUTS 69 ╟├╥ BYTES.
- $╞926 ╙ET .┘ TO ZERO.
- $╞928 ╫AIT FOR LAST BYTE WRITTEN SIGNAL.
- $╞92┬ ╫ASTE APPROXIMATELY 2 MICROSECONDS.
- $╞92├ ╙ET ╨ORT ┬ [$01] TO (┬╒╞╨╬╘],┘ [($42),┘].
- $╞930 ╔NCREMENT .┘ AND LOOP BACK TO ╫╥╘╙50 IF .┘ IS NOT ZERO. ╘HIS LOOP OUTPUTS 256 ╟├╥ BYTES.
- $╞933 ╙ET .┴ TO $55 (A GAP BYTE).
- $╞935 ╠OAD .╪ FROM ╘┴╔╠╟╨ [$4┼┬2], THE TAIL GAP COUNTER FOR THIS TRACK.
- $╞938 ╫╟╨2 ╫AIT FOR LAST BYTE WRITTEN SIGNAL.
- $╞93┬ ╫ASTE APPROXIMATELY 6 MICROSECONDS.
- $╞93┼ ╙AVE .┴ ($55) IN ╨ORT ┬ [$01].
- $╞940 ─ECREMENT .╪ AND LOOP BACK TO ╫╟╨2 IF .╪ > 0.
- $╞943 ┴DD $0┴ TO ╩╧┬╘╥╦ [$4┼┴5] TO ADVANCE TO THE NEXT BLOCK HEADER.
- $╞94├ ─ECREMENT ╙┼├╘ [$4┼┬6] AND LOOP BACK TO ╫╥╘╙┘╬ [$╞8─9] IF THERE ARE MORE BLOCKS TO BE WRITTEN ON THIS TRACK.
- $╞951 ╫AIT FOR LAST BYTE WRITTEN SIGNAL (THE LAST BYTE ON THIS TRACK).
- $╞954 ╙WITCH BACK TO READING IN PREPARATION FOR VERIFICATION.
- $╞958 ╙ET ╨ORT ┬ [$01] TO $╞╞.
- $╞95├ ╙ET ╨ORT ┬ IN LATCH MODE.
- ║FP0
- $╞95┼ ╙ET ╘╥┘╙ [$4┼┬5] TO $├8 TO LIMIT VERIFY ATTEMPTS TO 200.
- $╞963 ├╧═╨ ╙ET ┬╒╞╨╬╘ [$42/$43] TO $00/$40 ($4000) TO POINT TO THE START OF THE SECTOR HEADERS.
- $╞96┬ ├OPY THE NUMBER OF SECTORS ON THIS TRACK, ╙┼├╘╥ [$4┼┴┴], TO ╙┼├╘ [$4┼┬6].
- $╞971 ├═╨╥10 ╩╙╥ ╙┘╬├ [$╞4┴6] TO WAIT FOR ANY ╙┘╬├ MARK AND IF NONE WERE FOUND THEN BRANCH TO ├═╨╥25.
- $╞976 ╫AIT FOR END OF ╙┘╬├ MARK.
- $╞979 ╫AIT UNTIL WE HAVE STARTED READING THE NEXT BYTE.
- $╞97├ ╙ET .╪ TO $0┴ (THE LENGTH OF THE BLOCK HEADER) AND CLEAR .┘.
- $╞980 ╫AIT FOR BYTE READY.
- $╞983 ╔F ╨ORT ┬ [$01] DOES NOT MATCH THE BLOCK HEADER CHARACTER AT (┬╒╞╨╬╘),┘ [($42),┘] THEN BRANCH TO ├═╨╥20.
- $╞989 ╔NCREMENT .┘ AND DECREMENT .╪. ╔F .╪ IS > 0 THERE ARE MORE BYTES IN THE HEADER SO LOOP BACK TO ├═╨╥15 TO CHECK THEM.
- $╞98─ ╔NCREMENT ┬╒╞╨╬╘ [$42] SO IT POINTS TO THE NEXT HEADER IMAGE.
- $╞994 ╩UMP TO ╘╙╘─┴╘ [$╞9┴1] TO VERIFY THE DATA PORTION.
- $╞997 ├═╨╥20 ─ECREMENT ╘╥┘╙ [$4┼┬5] AND BRANCH BACK TO ├╧═╨ IF THERE ARE MORE ATTEMPTS LEFT.
- $╞99├ ╠OAD .┴ WITH $06 (╞╧╥═┴╘ ╓┼╥╔╞┘ ┼╥╥╧╥).
- $╞99┼ ├═╨╥25 ╩UMP TO ╞═╘┼╥╥ [$╞9┼├].
- $╞9┴1 ╘╙╘─┴╘ ╩╙╥ ╙┘╬├ [$╞4┴6] TO WAIT FOR THE NEXT ╙┘╬├ MARK AND BRANCH TO ├═╨╥25 IF NONE WERE FOUND.
- $╞9┴6 ╫AIT FOR END OF ╙┘╬├ MARK.
- $╞9┴9 ╫AIT UNTIL WE HAVE STARTED READING THE NEXT BYTE.
- $╞9┴├ ╠OAD .┘ WITH $┬┬ (THE START OF THE DATA IN THE OVERFLOW BUFFER).
- $╞9┴┼ ╘╙╘05 ╫AIT FOR BYTE READY.
- $╞9┬1 ╔F ╨ORT ┬ [$01] DOES NOT MATCH ╧╓╥┬╒╞,┘ [$4╞00,┘] BRANCH TO ├═╨╥20 TO TRY AGAIN.
- $╞9┬8 ╔NCREMENT .┘ AND LOOP BACK TO ╘╙╘05 IF THERE ARE MORE BYTES IN THE BUFFER. ╘HIS LOOP CHECKS 69 BYTES.
- $╞9┬┬ ╠OAD .╪ WITH $╞├ TO CHECK THE LAST 252 BYTES (IGNORE THE CHECKSUM AND OFF BYTES).
- $╞9┬─ ╘╙╘10 ╫AIT FOR BYTE READY.
- $╞9├0 ╔F ╨ORT ┬ [$01] DOES NOT MATCH ┬╒╞2,┘ [$4200,┘] BRANCH TO ├═╨╥20 TO TRY AGAIN.
- $╞9├7 ╔NCREMENT .┘, DECREMENT .╪, AND LOOP BACK TO ╘╙╘10 IF THERE ARE MORE BYTES TO CHECK.
- $╞9├┬ ─ECREMENT ╙┼├╘ [$4┼┬6] AND LOOP BACK TO ├═╨╥10 IF THERE ARE MORE SECTORS ON THIS TRACK.
- $╞9─0 ╠OAD .┘ WITH ─╥╔╓┼ [$┬0].
- $╞9─2 ╠OAD .╪ WITH ─╥╓╘╥╦,╪ [$4┼88,╪], THE CURRENT TRACK.
- $╞9─5 ╔NCREMENT .╪ TO THE NEXT TRACK AND IF .╪ HAS REACHED ═┴╪╘╥╦ [$4├╞6] THEN BRANCH TO ╞═╘┼╬─.
- $╞9─┬ ╘RANSFER .╪ TO .┴ AND ╩╙╥ ═╧╓╚┼─ [$╞693] TO STEP TO THE NEXT TRACK.
- $╞9─╞ ╩╙╥ ╥┼┴─╧╬ [$╞┼1┴] TO SET ╨ORT ┬ IN ╥┼┴─ MODE.
- $╞9┼2 ╩UMP TO ╘╧╨╨ [$╞84├] TO FORMAT THE TRACK.
- $╞9┼5 ╞═╘┼╬─ ╙ET ╟├╥╞╠╟ [$4┼┬1] TO ZERO.
- $╞9┼┴ ┼NABLE INTERRUPTS AND RETURN.
-